package Solutions

func levelOrder__(root *TreeNode) [][]int {
	que := make([]*TreeNode, 0, 32)

	if root == nil {
		return [][]int{}
	}
	ans := make([][]int, 0, 16)
	que = append(que, root)
	que = append(que, nil)
	t := make([]int, 0)
	for i := 0; i < len(que); i++ {
		if que[i] == nil {
			ans = append(ans, t)
			if i == len(que)-1 {
				break
			}
			que = append(que, nil)
			t = make([]int, 0)
		} else {
			t = append(t, que[i].Val)
			if que[i].Left != nil {
				que = append(que, que[i].Left)
			}
			if que[i].Right != nil {
				que = append(que, que[i].Right)
			}

		}
	}
	return ans
}
